/**
 * 辅助工具
 */
import { Service } from '@gnlab/utils'
import type { Services } from '@/services'
import { API } from '@/services/common/api'

/**
 * 从文件路径中提取出文件名
 */
export function getFilenameFromPath(path: string) {
  const nodes = path.split('/')
  const name = (nodes[nodes.length - 1] ?? '') || path
  return name
}

/**
 * 判断一个字符串是否是一个网址
 */
export function isURL(string: string) {
  return string.startsWith('http://') || string.startsWith('https://')
}

export class Utils extends Service<Services> {
  /**
   * 上传文件。若成功，返回生成的 URL
   */
  async upload(file: File | Blob, cdn = false) {
    const form = new FormData()
    form.append('file', file)
    form.append('isCdn', cdn ? 'true' : '')
    return API('/File/Upload', {
      body: form,
      formatter(url: string) {
        // CDN 目前返回的网址是 HTTP 的，可能导致兼容问题，改成 HTTPS 更稳妥（CDN 支持 HTTPS）
        if (cdn && url.startsWith('http://')) return 'https' + url.slice(4)
        return url
      },
    })
  }
}
